很久以后,这是系列的第三篇教程。 我希望你们都做得很好,享受教程系列(阅读,编码和改进)。
到目前为止,在本系列的第1部分和第2部分,为什么开发人员害怕重构代码,我们获得了为什么TDD至高无上,Android测试的类型,测试的位置,如何编写和运行测试等。
我们覆盖了单元测试到现在,接下来我们将转向集成测试,以验证演示者是否应对UI。
如图所示,我们可以创建用于登录的用户界面(我知道你会比这更好的用户界面)。
所以我们将编写一些与UI相关的代码。 我们在View和Presenter之间签有合同,即LoginView,如下所示。
现在我们将LoginView实现为我们的Activity,如下所示。
我们的Presenter实现如下所示
您将在LoginPresenterTest中发生错误,因为我们有构建使用LoginView对象的Presenter的构造函数。
为了摆脱这个错误,我们必须在创建演示者对象时将LoginView的对象传递给Presenter。 所以我们必须模拟LoginView.Here来模仿😍。
什么是模仿?
你有一个对象,你想要测试的方法,这些方法都依赖于其他对象。 您创建依赖对象的模拟,而不是创建该依赖关系的实际实例。 模拟对象用于单元测试。
为了模仿,我们将使用Mockito。
将以下testCompile依赖项添加到应用程序的build.gradle
testCompile ‘org.mockito:mockito-core:1.10.19’
现在我们模仿我们的LoginView,如下所示
Ooho😳,😎我们有我们的模拟(神奇)登录对象,可以传递给Presenter。 所以我们的实现就像下图
运行测试显示绿色信号继续。
集成测试(Presenter和View之间)
要验证Presenter调用正确的View方法后,我们使用verify()。
在上面的代码图中,验证方法确保在视图对象上调用showLoginSuccessMessage(),这确保我们的Presenter正确地与View集成。
其他测试如下
End